package com.gxc.queue;

import java.util.Stack;

/**
 * 如何仅用栈结构实现队列结构?
 *
 * 解法：
 * 准备两个栈，一个添加栈，一个弹出栈，add元素时，往添加栈压入（逆序），
 * 弹出元素时，如果弹出栈为空，则把添加栈压入弹出栈（正序），然后弹出元素，弹出栈不为空，则直接弹出
 */
public class StackQueue {

    /**
     * 添加栈
     */
    private Stack<Integer> addStack;
    /**
     * 弹出栈
     */
    private Stack<Integer> popStack;

    public void add(Integer num) {
        addStack.push(num);
    }

    public Integer pop() throws Exception {
        if (addStack.isEmpty() && popStack.isEmpty()) throw new Exception("数据为空");
        if (popStack.isEmpty()) {
            while (!addStack.isEmpty()) {
                popStack.push(addStack.pop());
            }
        }
        return popStack.pop();
    }

}
